/*
#**************************************************************************
#  openSIS is a student information system for public and non-public 
#  schools from Open Solutions for Education, Inc. web: www.os4ed.com
#
#  openSIS is  web-based, open source, and comes packed with features that 
#  include student demographic info, scheduling, grade book, attendance, 
#  report cards, eligibility, transcripts, parent portal, 
#  student portal and more.   
#
#  Visit the openSIS web site at http://www.opensis.com to learn more.
#  If you have question regarding this system or the license, please send 
#  an email to info@os4ed.com.
#
#  This program is released under the terms of the GNU General Public License  
#  as  published by the Free Software Foundation, version 2 of the License. 
#  See license.txt.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
#**************************************************************************** 
*/
using System;
using System.Data;
using System.Collections;
using System.Collections.Specialized;

namespace calendar.Data
{
public class GridDataProviderBase
{
    protected DataCommand Select;
    protected DataCommand Count;
    protected Hashtable Parameters=new Hashtable();
    protected int mRecordCount;
    protected int mPagesCount;

    public int RecordCount{
        get{
            return mRecordCount;
        }
    }

    public int PagesCount{
        get{
            return mPagesCount;
        }
    }

    protected bool _isEmpty = true;
    public bool IsEmpty{
        get{
            return _isEmpty;
        }
    }

    protected virtual void PrepareSelect()
    {
    }

    protected IDataReader ExecuteDataReader()
    {
    return Select.ExecuteReader();
    }

    protected DataSet ExecuteSelect()
    {
    return Select.Execute();
    }

    protected DataSet ExecuteSelect(int startRecord, int maxRecords)
    {
    return Select.Execute(startRecord,maxRecords);
    }

    protected int ExecuteCount()
    {
    return Convert.ToInt32(Count.ExecuteScalar());
    }
}

public delegate void ItemUpdatedEventHandler(object sender, ItemUpdatedEventArgs e);

public enum EditableGridOperation {Insert, Update, Delete};

public class ItemUpdatedEventArgs
{
    public EditableGridOperation Operation;
    public object Item;
    public ItemUpdatedEventArgs(EditableGridOperation operation, object item)
    {
        Operation = operation;
        Item = item;
    }
}

public class EditableGridDataProviderBase:GridDataProviderBase
{
    public event ItemUpdatedEventHandler ItemUpdated;
    protected virtual void OnItemUpdated(ItemUpdatedEventArgs e)
    {
        if(ItemUpdated != null)
            ItemUpdated(this, e);
    }
}
}
//End GridDataProvider Class

